package com.hfxt.dao;

import com.hfxt.entity.Uses;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

public interface UsesDao {

    //查询用户人数
    public int getCount();

    //查询全部用户信息（包含角色名称）
    public List<Uses> getUses();

    //按用户名查用户信息
    public List<Uses> getUsesByCondition1(@Param("username") String name);

    //按用户名和money查用户信息
    public List<Uses> getUsesByCondition2(@Param("name") String name,@Param("money") Integer money);

    //按用户名和money查用户信息
    public List<Uses> getUsesByCondition3(Map<String,Object> maps);

    //按用户名和money和密码查用户信息
    //当条件是对象的时候 没有用@param注解 xml里面#号的参数直接写 对象的属性名
    public List<Uses> getUsesByCondition4(Uses uses);

    //当条件是对象的时候 用了@param注解 xml里面#号的参数  需要写别名.对象的属性名
    public List<Uses> getUsesByCondition5(@Param("user") Uses uses);

    //参数是数组类型
    public List<Uses> getUsesByCondition6(Integer[] roleids);

    //参数是数组类型
    public List<Uses> getUsesByCondition7(List<Integer> roleids);

    //按指定的字段进行排序
    public List<Uses> getUsesByCondition8(@Param("choice")String choice);

    //添加 参数是对象  没有用@Param注解 #{}直接写属性名
    public int addUser(Uses uses);

    //添加 参数是对象  用@Param注解 #{}直接写别名.属性名
    public int addUser2(@Param("user") Uses uses);

    //添加 参数是对象  用@Param注解 #{}直接写别名.属性名
    public int addUser3(@Param("user") Uses uses);




    public int upateUser(Uses uses);
    public int upateUser2(@Param("user")Uses uses);

    public  int delUser(@Param("userid") Integer userid);

    //当条件是对象的时候 用了@param注解 xml里面#号的参数  需要写别名.对象的属性名
    public List<Uses> queryList(@Param("user") Uses uses);


    //动态条件分页查询（首先肯定要分页  每页显示三条
    // 如果有条件 就条件分页显示）
    public int getCountByPage(@Param("user")Uses uses);
    public List<Uses> getUsesByPage(@Param("user")Uses uses,
                                    @Param("pageIndex") Integer pageIndex,
                                    @Param("pageSize")Integer pageSize
                                    );


    public Uses getUserByUserId(@Param("userid")Integer userid);

}
